/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package asruby.runtime.buildin {

import asruby.runtime.IRubyObject;
	
/**
 *
 * @author headius
 */
public interface InstanceVariables {
    //
    // INSTANCE VARIABLE METHODS
    //

    function hasInstanceVariable(name:String):Boolean;
    function fastHasInstanceVariable(internedName:String):Boolean;
    
    function getInstanceVariable(name:String):IRubyObject;
    function fastGetInstanceVariable(internedName:String):IRubyObject;
    
    function setInstanceVariable(name:String, value:IRubyObject):IRubyObject;
    function fastSetInstanceVariable(internedName:String, value:IRubyObject):IRubyObject;

    function removeInstanceVariable(name:String):IRubyObject;

    function getInstanceVariableList():Array;

    function getInstanceVariableNameList():Array;
}
}